查看原文
其他

如何利用Kubernetes部署并管理XSKY SDS?

朱灿 XSKY星辰天合 2022-07-18

Kubernetes is eating the world,企业在升级转型过程中,已经越来越多的选用Kubernetes平台作为IaaS 、PaaS 新基础设施建设的中心。

使用XSKY SDS承接Kubernetes存储需求已经成为广泛容器平台云的常见选择,但是真正发挥出软件定义存储中的“定义”二字,并不局限于存储本身,包括了大规模SDS集群的部署。让整个SDS集群部署和利用可定义,使得平台管理员可以统一管理计算和存储资源编排,统一运维投入,这些也都是SDS架构的一部分天生优势。

我们在某涉密机构实际落地项目中,客户选用了Kubernetes作为计算平台,同时选用了XSKY SDS作为容器存储,提供块、文件、对象多种协议接口,承载数百种上层业务应用。存储集群的部署规模为50个节点1100个osd4个pool后续有5倍以上的扩容预期。对象业务还要求按照各自的生命周期进行对象桶的创建与管理。

如果由实施人员全程手动部署并负责过程监督,这将是一次巨大的人力资源投入,而且后续的日常管理运维也很复杂,需要平台管理员同时熟悉Kubernetes管理和存储管理。

针对上述需求,XSKY基于Kubernetes开发了Formation Service,它面向Kubernetes平台并利用Kubernetes能力实现一键部署存储集群,管理运维各类存储资源。


01

XSKY Formation Service的好处

前述客户项目使用Formation Service后,仅需提前定义好预期环境拓扑模板,再执行一条kubectl 命令就实现了整个存储集群的搭建,包含cluster、osd、pool、访问接口等存储资源,使整个部署时间降低了90%同时部署过程中,不论出现网络、硬盘等硬件异常,或是时间服务器不同步、内存不足等软件异常,都不影响已有的部署过程;Formation Service会在故障排除后自动重试执行剩余存储资源的构建;该项目在后续的节点扩容、小文件数量SKU扩容中,也只需修改模板,并用容器平台管理员最熟悉的单条kubectl命令即可完成,大大降低了管理运维成本。项目完成后,客户也可以利用容器动态使用对象存储,容器存储的容灾功能如复制、备份和数据迁移等功能。

我们来详细说明下如何利用Kubernetes来定义XSKY SDS集群,让部署对接变得更简单。


02

利用Kubernetes CRD定义XSKY SDS集群资源

我们可以在Kubernetes平台将XSKY存储集群中不同的资源被拆分成不同的用户自定义资源,即CRD(Custom Resouce Definition);CRD功能在Kubernetes 1.7版本被引入,用户可以根据自己的需求添加自定义的Kubernetes对象资源。同时,自定义资源和原生内置的资源一样,都可以用kubectl来去创建、查看,也享有 RBAC、安全功能。用户可以开发自定义控制器来感知或者操作自定义资源的变化。下面我们来看一个简单的CRD实例, 下面代码块是一个CRD的定义:首先最上面的apiVersion就是指CRD的一个apiVersion声明,声明它是一个CRD的需求或者说定义的Schema。kind就是CustomResourcesDefinition,指CRD。name是一个用户自定义资源中自己自定义的一个名字。一般我们建议使用“顶级域名.xxx.APIGroup”这样的格式,比如这里就是sds.resourcecontroller.xsky.com。spec用于指定该CRD的group、version。比如在创建Pod或者Deployment时,它的group可能为apps/v1或者apps/v1beta1之类,这里我们也同样需要去定义 CRD的group。
  • 代码块中的group为resourcescontroller.xsky.com;

  • verison为v1alpha1;

  • names指的是它的kind是什么,比如Deployment的kind就是Deployment,Pod的kind就是Pod,这里的kind被定义为了XCluster;

  • plural字段就是一个昵称,比如当一些字段或者一些资源的名字比较长时,可以用该字段自定义一些昵称来简化它的长度;

  • scope字段表明该CRD是否被命名空间管理。比如ClusterRoleBinding就是Cluster级别的。再比如Pod、Deployment可以被创建到不同的命名空间里,那么它们的scope就是Namespaced的。这里的CRD就是Namespaced的。

如下代码块是上面定义的CRD的一个实例:
  • 它的apiVersion就是我们刚才所定义的resourcescontroller.xsky.com/ v1alpha1;

  • kind就是XCluster;

  • metadata的name就是我们这个例子的名字;

  • 这个实例中spec字段其实没有在CRD的Schema中定义,我们可以在spec中根据自己的需求来写一写,格式就是key:value这种格式,比代码块中的deploymentName: example-foo, replicas: 1。当然我们也可以去做一些检验或者状态资源去定义spec中到底包含什么。

XSKY存储集群中的资源被拆分成各种不同的自定义资源,不同的资源有相应的模板文件去定义,XSKY存储集群的资源拆分大致如下所示:存储节点、硬盘(osd)、存储资源池(pool)、访问路径(accesspath)、VIP等,存储集群中的各种资源在Kubernetes平台中被作为一种用户自定义资源在使用;

1、资源定义模板化

XSKY存储资源被拆分成Kubernetes平台上的不同的用户自定义资源后,XSKY提供了统一的、标准的模本文件去定义不同的资源信息。实施工程师只需要根据客户的实际需求,对模板文件按照实际场景修改,就能定制出客户实际所需的存储集群。比如,集群规模、网络规划、管理员用户设置、硬盘数量和存储资源池的配置等。2、部署自动化XSKY SDS formation工具,支持一键式部署存储节点,定义所需的配置文件,可以完成存储集群的部署,包括:网络配置,管理员用户名和密码配置,存储节点角色设置,硬盘管理和创建存储池等;3、统一配置管理通过容器平台UI和CLI可以实现存储集群的部署、更新、销毁等;其他组件解释请参考《深入了解Kubernetes中的XSKY存储》;4、XSKY Resource Controller

作为一键式部署SDS集群的大脑,用于监听XSKY存储集群创建、更新、删除(销毁)等事件,并把消息事件处理后,实现XSKY存储集群的部署、更新和销毁动作;


03

如何实现对接XSKY SDS统一配置管理

XSKY SDS在Kubernetes容器平台被作为一种用户自定义资源在使用,Kubernetes是如何统一配置管理XSKY SDS,下图做了详细介绍:1、模板修改根据XSKY提供的资源定义模板以及真实的场景,修改模本文件,主要包括:集群规模,网络资源,存储资源,用户资源等信息;2、下发请求根据修改的模板,使用UI或CLI下发请求到Kubernetes节点的Master节点的API Server;3、XSKY Reource controller处理请求

XSKY资源控制器,监听API Server上XSKY SDS这种自定义资源的变化,根据实际的请求做对应处理,包括:部署,更新,销毁;XSKY资源控制器会解析,模板文件的信息,生成部署XSKY SDS存储所需要的脚本文件,配置文件,以及formation所需要的json文件;

XSKY资源控制器会将存储安装包拷贝到模本文件中指定的Master节点,并在管理节点上解析安装包,替换默认的配置文件,执行部署脚本,完成存储集群的部署。


04XSKY Resource 控制器如何实现自定义资源部署XSKY Resource Controller包含不同的资源控制器,比如,节点控制器、硬盘控制器、存储资源池控制器、访问路径控制器、VIP控制器等,每种控制器管理不同的资源的创建和销毁。1、节点控制器(node controller)负责部署节点和移除节点,node controller解析定义好的模板文件,根据模板文件中定义好的角色,以及节点数,选择出管理节点,将存储安装包上传到管理节点,并根据模板文件,生成部署节点所需要的json文件,优先部署管理节点,然后部署其他节点;也可以根据部署的节点实例,去移除对应的节点;2、硬盘控制器(osd controller)负责创建osd和删除osd,osd controller解析定义好的模板文件,生成创建osd所需要的json文件,xsky formation工具根据json文件创建osd;资源池控制器(pool controller):负责存储池的创建和参数;3、访问路径控制器(access path controller)负责访问路径的创建和删除,挂载网关服务器和移除网关服务器;4、vip控制器(vip controller)负责给创建的访问路径设置vip。

目前,XSKY Resource Controller已经做到了让XSKY SDS集群在Kubernetes容器平台上的部署和运维变的更简单。


05小结软件定义存储本身不仅仅代表着分布式存储的架构,存储能力的软件化以及可定制化,同时也代表了部署、运维、管理的可定义,按照用户自己的需要进行架构整合,实现统一调度。END


推荐阅读

Recommended reading





点击下列标题  阅读更多资讯


详解支持 kubernetes CSI的持久化容器存储

如何为容器提供持久化存储?

如何做好容器生态的数据服务?

中国东信亿级海量文件和容器云实践

飞贷全容器化升级实践

时速云与XSKY完成产品兼容性互认证,加速容器云落地部署






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存